home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 4: GNU Archives / Linux Cubed Series 4 - GNU Archives.iso / gnu / binutils.7 / binutils / binutils-2.7 / configure.in < prev    next >
Encoding:
Text File  |  1996-07-15  |  27.9 KB  |  823 lines

  1. #! /bin/bash
  2. ##############################################################################
  3.  
  4. ## This file is a shell script fragment that supplies the information
  5. ## necessary to tailor a template configure script into the configure
  6. ## script appropriate for this directory.  For more information, check
  7. ## any existing configure script.  
  8.  
  9. ## Be warned, there are two types of configure.in files.  There are those
  10. ## used by Autoconf, which are macros which are expanded into a configure
  11. ## script by autoconf.  The other sort, of which this is one, is executed
  12. ## by Cygnus configure.  
  13.  
  14. ## For more information on these two systems, check out the documentation
  15. ## for 'Autoconf' (autoconf.texi) and 'Configure' (configure.texi).  
  16.  
  17. #   Copyright (C) 1992, 93, 94, 95, 1996 Free Software Foundation, Inc.
  18. #
  19. # This file is free software; you can redistribute it and/or modify it
  20. # under the terms of the GNU General Public License as published by
  21. # the Free Software Foundation; either version 2 of the License, or
  22. # (at your option) any later version.
  23. #
  24. # This program is distributed in the hope that it will be useful, but
  25. # WITHOUT ANY WARRANTY; without even the implied warranty of
  26. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  27. # General Public License for more details.
  28. #
  29. # You should have received a copy of the GNU General Public License
  30. # along with this program; if not, write to the Free Software
  31. # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  32.  
  33. ##############################################################################
  34.  
  35. ### To add a new directory to the tree, first choose whether it is a target
  36. ### or a host dependent tool.  Then put it into the appropriate list
  37. ### (library or tools, host or target), doing a dependency sort.  For
  38. ### example, gdb requires that byacc (or bison) be built first, so it is in
  39. ### the ${host_tools} list after byacc and bison.  
  40.  
  41.  
  42. # these libraries are used by various programs built for the host environment
  43. #
  44. host_libs="mmalloc libiberty opcodes bfd readline gash tcl tk tclX"
  45.  
  46. if [ "${enable_gdbgui}" = "yes" ] ; then
  47.     host_libs="${host_libs} libgui"
  48. fi
  49.  
  50. # these tools are built for the host environment
  51. #
  52. host_tools="byacc flex bison binutils ld gas gcc gdb make patch
  53.         prms send-pr gprof gdbtest tgas etc expect dejagnu sim bash
  54.             m4 autoconf ispell grep diff rcs cvs fileutils shellutils time
  55.         textutils wdiff find emacs emacs19 uudecode hello tar gzip indent
  56.         recode release sed utils guile perl apache inet gawk"
  57.  
  58.  
  59. # these libraries are built for the target environment, and are built after
  60. # the host libraries and the host tools (which may be a cross compiler)
  61. #
  62. target_libs="target-libiberty target-libgloss target-newlib target-libio target-librx target-libstdc++ target-libg++"
  63.  
  64.  
  65. # these tools are built using the target libs, and are intended to run only
  66. # in the target environment
  67. #
  68. # note: any program that *uses* libraries that are in the "target_libs"
  69. # list belongs in this list.  those programs are also very likely
  70. # candidates for the "native_only" list which follows
  71. #
  72. target_tools="target-examples target-groff"
  73.  
  74. ################################################################################
  75.  
  76. ## These two lists are of directories that are to be removed from the
  77. ## ${configdirs} list for either cross-compilations or for native-
  78. ## compilations.  For example, it doesn't make that much sense to
  79. ## cross-compile Emacs, nor is it terribly useful to compile target-libiberty in
  80. ## a native environment.  
  81.  
  82. # directories to be built in the native environment only
  83. #
  84. native_only="autoconf cvs emacs emacs19 fileutils find gawk grep gzip hello
  85.          indent ispell m4 rcs recode sed shellutils tar textutils gash
  86.          uudecode wdiff gprof target-groff guile perl apache inet time
  87.          bash"
  88.  
  89. # directories to be built in a cross environment only
  90. #
  91. cross_only="target-libiberty target-libgloss target-newlib"
  92.  
  93. ## All tools belong in one of the four categories, and are assigned above
  94. ## We assign ${configdirs} this way to remove all embedded newlines.  This
  95. ## is important because configure will choke if they ever get through.
  96. ## ${configdirs} is directories we build using the host tools.
  97. ## ${target_configdirs} is directories we build using the target tools.
  98. #
  99. configdirs=`echo ${host_libs} ${host_tools}`
  100. target_configdirs=`echo ${target_libs} ${target_tools}`
  101.  
  102. ################################################################################
  103.  
  104. srctrigger=move-if-change
  105. srcname="gnu development package"
  106.  
  107. # This gets set non-empty for some net releases of packages.
  108. appdirs=""
  109.  
  110. # per-host:
  111.  
  112. # Work in distributions that contain no compiler tools, like Autoconf.
  113. if [ -d ${srcdir}/config ]; then
  114. case "${host}" in
  115.   m68k-hp-hpux*)      host_makefile_frag=config/mh-hp300 ;;
  116.   m68k-apollo-sysv*)      host_makefile_frag=config/mh-apollo68 ;;
  117.   m68k-apollo-bsd*)       host_makefile_frag=config/mh-a68bsd ;;
  118.   m68k-*-linux*)      host_makefile_frag=config/mh-linux ;;
  119.   m88k-dg-dgux*)      host_makefile_frag=config/mh-dgux ;;
  120.   m88k-harris-cxux*)      host_makefile_frag=config/mh-cxux ;;
  121.   m88k-motorola-sysv*)    host_makefile_frag=config/mh-delta88;;
  122.   mips*-dec-ultrix*)      host_makefile_frag=config/mh-decstation ;;
  123.   mips*-nec-sysv4*)      host_makefile_frag=config/mh-necv4 ;;
  124.   mips*-sgi-irix[56]*)    host_makefile_frag=config/mh-irix5 ;;
  125.   mips*-sgi-irix4*)       host_makefile_frag=config/mh-irix4 ;;
  126.   mips*-sgi-irix3*)       host_makefile_frag=config/mh-sysv ;;
  127.   mips*-*-sysv4*)      host_makefile_frag=config/mh-sysv4 ;;
  128.   mips*-*-sysv*)      host_makefile_frag=config/mh-riscos ;;
  129.   i[345]86-ncr-sysv4.3)   host_makefile_frag=config/mh-ncrsvr43 ;;
  130.   i[345]86-ncr-sysv4*)    host_makefile_frag=config/mh-ncr3000 ;;
  131.   i[345]86-*-sco3.2v5*)   host_makefile_frag=config/mh-sysv ;;
  132.   i[345]86-*-sco*)        host_makefile_frag=config/mh-sco ;;
  133.   i[345]86-*-isc*)      host_makefile_frag=config/mh-sysv ;;
  134.   i[345]86-*-linux*)      host_makefile_frag=config/mh-linux ;;
  135.   i[345]86-*-solaris2*)   host_makefile_frag=config/mh-sysv4 ;;
  136.   i[345]86-*-aix*)      host_makefile_frag=config/mh-aix386 ;;
  137.   i[345]86-*-go32*)      host_makefile_frag=config/mh-go32 ;;
  138.   *-cygwin32*)            host_makefile_frag=config/mh-cygwin32 ;;
  139.   vax-*-ultrix2*)         host_makefile_frag=config/mh-vaxult2 ;;
  140.   *-*-solaris2*)          host_makefile_frag=config/mh-solaris ;;
  141.   m68k-sun-sunos*)      host_makefile_frag=config/mh-sun3 ;;
  142.   *-hp-hpux[78]*)         host_makefile_frag=config/mh-hpux8 ;;
  143.   *-hp-hpux*)             host_makefile_frag=config/mh-hpux ;;
  144.   *-*-hiux*)              host_makefile_frag=config/mh-hpux ;;
  145.   rs6000-*-lynxos*)      host_makefile_frag=config/mh-lynxrs6k ;;
  146.   *-*-lynxos*)            host_makefile_frag=config/mh-lynxos ;;
  147.   *-*-sysv4*)             host_makefile_frag=config/mh-sysv4 ;;
  148.   *-*-sysv*)              host_makefile_frag=config/mh-sysv ;;
  149. esac
  150. fi
  151.  
  152. # If we aren't going to be using gcc, see if we can extract a definition
  153. # of CC from the fragment.
  154. if [ -z "${CC}" -a "${build}" = "${host}" ]; then
  155.   IFS="${IFS=     }"; save_ifs="$IFS"; IFS="${IFS}:"
  156.   found=
  157.   for dir in $PATH; do
  158.     test -z "$dir" && dir=.
  159.     if test -f $dir/gcc; then
  160.       found=yes
  161.       break
  162.     fi
  163.   done
  164.   IFS="$save_ifs"
  165.   if [ -z "${found}" -a -n "${host_makefile_frag}" -a -f "${srcdir}/${host_makefile_frag}" ]; then
  166.     xx=`sed -n -e 's/^[     ]*CC[     ]*=[     ]*\(.*\)$/\1/p' < ${srcdir}/${host_makefile_frag}`
  167.     if [ -n "${xx}" ] ; then
  168.       CC=$xx
  169.     fi
  170.   fi
  171. fi
  172.  
  173. # We default to --with-shared on platforms where -fpic is meaningless.
  174. # Well, we don't yet, but we will.
  175. if false && [ "${host}" = "${target}" ] && [ x${enable_shared} = x ]; then
  176.   case "${target}" in
  177.     alpha-dec-osf*)    enable_shared=yes ;;
  178.     alpha-*-linux*)    enable_shared=yes ;;
  179.     mips-sgi-irix5*)    enable_shared=yes ;;
  180.     *)            enable_shared=no ;;
  181.   esac
  182. fi
  183.  
  184. case "${enable_shared}" in
  185.   yes) shared=yes ;;
  186.   no) shared=no ;;
  187.   "") shared=no ;;
  188.   *) shared=yes ;;
  189. esac
  190.  
  191. if [ x${shared} = xyes ]; then
  192.   waugh=
  193.   case "${host}" in
  194.     hppa*)        waugh=config/mh-papic ;;
  195.     i[345]86-*)        waugh=config/mh-x86pic ;;
  196.     sparc64-*)        waugh=config/mh-sparcpic ;;
  197.     *)            waugh=config/mh-${host_cpu}pic ;;
  198.   esac
  199.   if [ -f ${srcdir}/${waugh} ]; then
  200.     if [ -n "${host_makefile_frag}" ] ; then
  201.       cat ${srcdir}/${host_makefile_frag} > mh-frag
  202.       cat ${srcdir}/${waugh} >> mh-frag
  203.       host_makefile_frag=mh-frag
  204.     else
  205.       host_makefile_frag=${waugh}
  206.     fi
  207.   fi
  208. fi
  209.  
  210. # per-target:
  211.  
  212. case "${target}" in
  213.   v810*)        target_makefile_frag=config/mt-v810 ;;
  214.   i[345]86-*-netware*)  target_makefile_frag=config/mt-netware ;;
  215.   powerpc-*-netware*)   target_makefile_frag=config/mt-netware ;;
  216. esac
  217.  
  218. skipdirs=
  219. gasdir=gas
  220. use_gnu_ld=
  221. use_gnu_as=
  222.  
  223. # some tools are so dependent upon X11 that if we're not building with X, 
  224. # it's not even worth trying to configure, much less build, that tool.
  225.  
  226. case ${with_x} in
  227.   yes | "")  # the default value for this tree is that X11 is available
  228.     ;;
  229.   no)
  230.     skipdirs="${skipdirs} tk gash"
  231.     ;;
  232.   *)
  233.         echo "*** bad value \"${with_x}\" for -with-x flag; ignored" 1>&2
  234.         ;;
  235. esac
  236.  
  237. # Some tools are only suitable for building in a "native" situation.
  238. # Those are added when we have a host==target configuration.  For cross
  239. # toolchains, we add some directories that should only be useful in a
  240. # cross-compiler.
  241.  
  242. is_cross_compiler=
  243.  
  244. if [ x"${host}" = x"${target}" ] ; then
  245.     # when doing a native toolchain, don't build the targets
  246.     # that are in the 'cross only' list
  247.     skipdirs="${skipdirs} ${cross_only}"
  248.     is_cross_compiler=no
  249.     target_subdir=.
  250. else
  251.     # similarly, don't build the targets in the 'native only' 
  252.     # list when building a cross compiler
  253.     skipdirs="${skipdirs} ${native_only}"
  254.     is_cross_compiler=yes
  255.     target_subdir=${target_alias}
  256.     if [ ! -d ${target_subdir} ] ; then
  257.         if mkdir ${target_subdir} ; then true
  258.         else
  259.         echo "'*** could not make ${PWD=`pwd`}/${target_subdir}" 1>&2
  260.                 exit 1
  261.         fi
  262.     fi
  263. fi    
  264.  
  265. copy_dirs=
  266.  
  267. # Handle --with-headers=XXX.  The contents of the named directory are
  268. # copied to $(tooldir)/sys-include.
  269. if [ x"${with_headers}" != x ]; then
  270.   if [ x${is_cross_compiler} = xno ]; then
  271.     echo 1>&2 '***' --with-headers is only supported when cross compiling
  272.     exit 1
  273.   fi
  274.   case "${exec_prefixoption}" in
  275.   "") x=${prefix} ;;
  276.   *) x=${exec_prefix} ;;
  277.   esac
  278.   copy_dirs="${copy_dirs} ${with_headers} $x/${target_alias}/sys-include"
  279. fi
  280.  
  281. # Handle --with-libs=XXX.  Multiple directories are permitted.  The
  282. # contents are copied to $(tooldir)/lib.
  283. if [ x"${with_libs}" != x ]; then
  284.   if [ x${is_cross_compiler} = xno ]; then
  285.     echo 1>&2 '***' --with-libs is only supported when cross compiling
  286.     exit 1
  287.   fi
  288.   # Copy the libraries in reverse order, so that files in the first named
  289.   # library override files in subsequent libraries.
  290.   case "${exec_prefixoption}" in
  291.   "") x=${prefix} ;;
  292.   *) x=${exec_prefix} ;;
  293.   esac
  294.   for l in ${with_libs}; do
  295.     copy_dirs="$l $x/${target_alias}/lib ${copy_dirs}"
  296.   done
  297. fi
  298.  
  299. # If both --with-headers and --with-libs are specified, default to
  300. # --without-newlib.
  301. if [ x"${with_headers}" != x ] && [ x"${with_libs}" != x ]; then
  302.   if [ x"${with_newlib}" = x ]; then
  303.     with_newlib=no
  304.   fi
  305. fi
  306.  
  307. # Recognize --with-newlib/--without-newlib.
  308. if [ x${with_newlib} = xno ]; then
  309.   skipdirs="${skipdirs} target-newlib"
  310. elif [ x${with_newlib} = xyes ]; then
  311.   skipdirs=`echo " ${skipdirs} " | sed -e 's/ target-newlib / /'`
  312. fi
  313.  
  314. # Default to using --with-stabs for certain targets.
  315. if [ x${with_stabs} = x ]; then
  316.   case "${target}" in
  317.   mips*-*-* | alpha*-*-osf* | i[345]86*-*-sysv4* | i[345]86*-*-unixware*)
  318.     with_stabs=yes;
  319.     withoptions="${withoptions} --with-stabs"
  320.     ;;
  321.   esac
  322. fi
  323.  
  324. # Handle ${copy_dirs}
  325. set fnord ${copy_dirs}
  326. shift
  327. while [ $# != 0 ]; do
  328.   if [ -f $2/COPIED ] && [ x"`cat $2/COPIED`" = x"$1" ]; then
  329.     :
  330.   else
  331.     echo Copying $1 to $2
  332.  
  333.     # Use the install script to create the directory and all required
  334.     # parent directories.
  335.     if [ -d $2 ]; then
  336.       :
  337.     else
  338.       echo >config.temp
  339.       ${srcdir}/install.sh -c -m 644 config.temp $2/COPIED
  340.     fi
  341.  
  342.     # Copy the directory, assuming we have tar.
  343.     # FIXME: Should we use B in the second tar?  Not all systems support it.
  344.     (cd $1; tar -cf - .) | (cd $2; tar -xpf -)
  345.  
  346.     # It is the responsibility of the user to correctly adjust all
  347.     # symlinks.  If somebody can figure out how to handle them correctly
  348.     # here, feel free to add the code.
  349.  
  350.     echo $1 > $2/COPIED
  351.   fi
  352.   shift; shift
  353. done
  354.  
  355. # Configure extra directories which are host specific
  356.  
  357. case "${host}" in
  358.     i[345]86-*-go32*)
  359.       configdirs="$configdirs dosrel" ;;
  360.     *-cygwin32*)
  361.       configdirs="$configdirs dosrel" ;;
  362. esac
  363.  
  364. # Remove more programs from consideration, based on the host or 
  365. # target this usually means that a port of the program doesn't
  366. # exist yet.
  367.  
  368. noconfigdirs=""
  369.  
  370. case "${host}" in
  371.   i[345]86-*-vsta)
  372.     noconfigdirs="tcl expect dejagnu make texinfo bison patch flex byacc send-pr gprof uudecode dejagnu diff guile perl apache inet"
  373.     ;;
  374.   i[345]86-*-go32)
  375.     noconfigdirs="tcl tk expect dejagnu make texinfo bison patch flex byacc send-pr gprof uudecode dejagnu diff guile perl apache inet"
  376.     ;;
  377.   *-*-cygwin32)
  378.      noconfigdirs="tk tcl expect dejagnu cvs autoconf bison send-pr gprof rcs guile perl texinfo apache inet"
  379.     ;;
  380.   ppc*-*-pe)
  381.      noconfigdirs="patch diff make tk tcl expect dejagnu cvs autoconf texinfo bison send-pr gprof rcs guile perl apache inet"
  382.     ;;
  383. esac
  384.  
  385.  
  386. case "${target}" in
  387.   *-*-netware)
  388.     noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-librx target-newlib target-libiberty target-libgloss"
  389.     ;;
  390.   *-*-vxworks*)
  391.     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
  392.     ;;
  393.   *-*-ose)
  394.     noconfigdirs="$noconfigdirs target-libgloss"
  395.     ;;
  396.   alpha-dec-osf*)
  397.     # ld works, but does not support shared libraries.  emacs doesn't
  398.     # work.  newlib is not 64 bit ready.  I'm not sure about fileutils or grep.
  399.     # gas doesn't generate exception information.
  400.     noconfigdirs="$noconfigdirs gas ld emacs fileutils grep target-newlib target-libgloss"
  401.     ;;
  402.   alpha*-*-*vms*)
  403.     noconfigdirs="$noconfigdirs gdb ld target-newlib target-libgloss"
  404.     ;;
  405.   alpha*-*-*)
  406.     # newlib is not 64 bit ready
  407.     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
  408.     ;;
  409.   arm-*-pe*)
  410.     noconfigdirs="$noconfigdirs target-libgloss"
  411.     ;;
  412.   arm-*-riscix*)
  413.     noconfigdirs="$noconfigdirs ld target-libgloss"
  414.     ;;
  415.   h8300*-*-* | \
  416.   h8500-*-*)
  417.     noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-libio target-librx target-libgloss"
  418.     ;;
  419.   hppa*-*-*elf* | \
  420.   hppa*-*-lites*)
  421.     # Do configure ld/binutils/gas for this case.
  422.     ;;
  423.   hppa*-*-*)
  424.     # HP's C compiler doesn't handle Emacs correctly (but on BSD and Mach
  425.     # cc is gcc, and on any system a user should be able to link cc to
  426.     # whatever they want.  FIXME, emacs emacs19).
  427.     case "${CC}" in
  428.     "" | cc*) noconfigdirs="$noconfigdirs emacs emacs19" ;;
  429.         *) ;;
  430.     esac
  431.     noconfigdirs="$noconfigdirs ld shellutils"
  432.     ;;
  433.   i[345]86-*-go32)
  434.     # but don't build gdb
  435.     noconfigdirs="$noconfigdirs gdb target-libg++ target-libstdc++ target-libio target-librx"
  436.     ;;
  437.   *-*-cygwin32)
  438.     target_configdirs="$target_configdirs target-winsup"
  439.     noconfigdirs="$noconfigdirs tcl tk expect target-libgloss"
  440.     # always build newlib.
  441.     skipdirs=`echo " ${skipdirs} " | sed -e 's/ target-newlib / /'`
  442.  
  443.     # Can't build gdb for cygwin32 if not native.
  444.     case "${host}" in
  445.       *-*-cygwin32) ;; # keep gdb
  446.       *) noconfigdirs="$noconfigdirs gdb"
  447.     esac
  448.     ;;    
  449.   i[345]86-*-pe)
  450.     noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-libio target-librx target-libgloss"
  451.     ;;
  452.   i[345]86-*-sco3.2v5*)
  453.     # The linker does not yet know about weak symbols in COFF,
  454.     # and is not configured to handle mixed ELF and COFF.
  455.     noconfigdirs="$noconfigdirs gprof ld target-libgloss"
  456.     ;;
  457.   i[345]86-*-sco*)
  458.     noconfigdirs="$noconfigdirs gprof target-libgloss"
  459.     ;;
  460.   i[345]86-*-solaris2*)
  461.     # The linker does static linking correctly, but the Solaris C library
  462.     # has bugs such that some important functions won't work when statically
  463.     # linked.  (See man pages for getpwuid, for example.)
  464.     noconfigdirs="$noconfigdirs ld target-libgloss"
  465.     ;;
  466.   i[345]86-*-sysv4*)
  467.     # The SYSV4 C compiler doesn't handle Emacs correctly
  468.     case "${CC}" in
  469.     "" | cc*) noconfigdirs="$noconfigdirs emacs emacs19" ;;
  470.         *) ;;
  471.     esac
  472.     # but that's okay since emacs doesn't work anyway
  473.     noconfigdirs="$noconfigdirs emacs emacs19 target-libgloss"
  474.     ;;
  475.   powerpc-*-aix*)
  476.     # copied from rs6000-*-* entry
  477.     noconfigdirs="$noconfigdirs gprof cvs target-libgloss"
  478.     # This is needed until gcc and ld are fixed to work together.
  479.     use_gnu_ld=no
  480.     ;;
  481.   powerpc*-*-winnt* | powerpc*-*-pe* | ppc*-*-pe)
  482.     target_configdirs="$target_configdirs target-winsup"
  483.     noconfigdirs="$noconfigdirs gdb tcl tk make expect target-libgloss"
  484.     # always build newlib.
  485.     skipdirs=`echo " ${skipdirs} " | sed -e 's/ target-newlib / /'`
  486.     ;;
  487.     # This is temporary until we can link against shared libraries
  488.   powerpcle-*-solaris*)
  489.     noconfigdirs="$noconfigdirs gdb sim make tcl tk expect"
  490.     ;;
  491.   rs6000-*-lynxos*)
  492.     # The CVS server code doesn't work on the RS/6000
  493.     # Newlib makes problems for libg++ in crosses.
  494.     noconfigdirs="$noconfigdirs target-newlib gprof cvs"
  495.     ;;
  496.   rs6000-*-aix*)
  497.     noconfigdirs="$noconfigdirs gprof"
  498.     # This is needed until gcc and ld are fixed to work together.
  499.     use_gnu_ld=no
  500.     ;;
  501.   rs6000-*-*)
  502.     noconfigdirs="$noconfigdirs gprof"
  503.     ;;
  504.   m68k-apollo-*)
  505.     noconfigdirs="$noconfigdirs ld binutils gprof target-libgloss"
  506.     ;;
  507.   mips*-*-irix5*)
  508.     # The GNU linker does not support shared libraries.
  509.     # emacs is emacs 18, which does not work on Irix 5 (emacs19 does work)
  510.     noconfigdirs="$noconfigdirs ld gprof emacs target-libgloss"
  511.     ;;
  512.   mips*-*-irix6*)
  513.     # The GNU linker does not support shared libraries.
  514.     # emacs is emacs 18, which does not work on Irix 5 (emacs19 does work)
  515.     # BFD does not have Irix 6 support yet.
  516.     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes gdb readline mmalloc sim gprof emacs target-libgloss"
  517.     ;;
  518.   mips*-dec-bsd*)
  519.     noconfigdirs="$noconfigdirs gprof target-libgloss"
  520.     ;;
  521.   mips*-*-bsd*)
  522.     noconfigdirs="$noconfigdirs gprof target-libgloss"
  523.     ;;
  524.   mips*-*-*)
  525.     noconfigdirs="$noconfigdirs gprof"
  526.     ;;
  527.   romp-*-*)
  528.     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss"
  529.     ;;
  530.   sh-*-*)
  531.     case "${host}" in
  532.       i[345]86-*-vsta) ;; # don't add gprof back in
  533.       i[345]86-*-go32) ;; # don't add gprof back in
  534.       *) skipdirs=`echo " ${skipdirs} " | sed -e 's/ gprof / /'` ;;
  535.     esac
  536.     noconfigdirs="$noconfigdirs target-libgloss"
  537.     ;;
  538.   sparc-*-sunos4*)
  539.     if [ x${is_cross_compiler} != xno ] ; then
  540.            noconfigdirs="$noconfigdirs gdb gdbtest target-newlib target-libgloss"
  541.     else
  542.            use_gnu_ld=no
  543.     fi
  544.     ;;
  545.   v810-*-*)
  546.     noconfigdirs="$noconfigdirs bfd binutils gas gcc gdb ld target-libio target-libg++ target-libstdc++ opcodes target-libgloss"
  547.     ;;
  548.   vax-*-vms)
  549.     noconfigdirs="$noconfigdirs bfd binutils gdb ld target-newlib opcodes target-libgloss"
  550.     ;;
  551.   vax-*-*)
  552.     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
  553.     ;;
  554.   *-*-lynxos*)
  555.     # Newlib makes problems for libg++ in crosses.
  556.     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
  557.     ;; 
  558.   *-*-macos* | \
  559.   *-*-mpw*)
  560.     # Macs want a resource compiler.
  561.     configdirs="$configdirs grez"
  562.     ;;    
  563. esac
  564.  
  565. # targets that need a second pass
  566. case "${target}" in
  567.   *-gm-magic*)
  568.     noconfigdirs="$noconfigdirs target-libgloss"
  569.     ;;
  570. esac
  571.  
  572. # If we aren't building newlib, then don't build libgloss, since libgloss
  573. # depends upon some newlib header files.
  574. case "${noconfigdirs}" in
  575.   *target-libgloss*) ;;
  576.   *target-newlib*) noconfigdirs="$noconfigdirs target-libgloss" ;;
  577. esac
  578.  
  579. # If we are building a Canadian Cross, discard tools that can not be built
  580. # using a cross compiler.  FIXME: These tools should be fixed.
  581. if [ "${build}" != "${host}" ]; then
  582.   noconfigdirs="$noconfigdirs tcl tk expect dejagnu"
  583. fi
  584.  
  585. # Make sure we don't let GNU ld be added if we didn't want it.
  586. if [ x$with_gnu_ld = xno ]; then
  587.   use_gnu_ld=no
  588.   noconfigdirs="$noconfigdirs ld"
  589. fi
  590.  
  591. # Make sure we don't let GNU as be added if we didn't want it.
  592. if [ x$with_gnu_as = xno ]; then
  593.   use_gnu_as=no
  594.   noconfigdirs="$noconfigdirs gas"
  595. fi
  596.  
  597. # Remove the entries in $skipdirs and $noconfigdirs from $configdirs and
  598. # $target_configdirs.
  599. # If we have the source for $noconfigdirs entries, add them to $notsupp.
  600.  
  601. notsupp=""
  602. for dir in . $skipdirs $noconfigdirs ; do
  603.   dirname=`echo $dir | sed -e s/target-//g`
  604.   if [ $dir != . ]  && echo " ${configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
  605.     configdirs=`echo " ${configdirs} " | sed -e "s/ ${dir} / /"`
  606.     if [ -r $srcdir/$dirname/configure ] \
  607.     || [ -r $srcdir/$dirname/configure.in ]; then
  608.       if echo " ${skipdirs} " | grep " ${dir} " >/dev/null 2>&1; then
  609.     true
  610.       else
  611.     notsupp="$notsupp $dir"
  612.       fi
  613.     fi
  614.   fi
  615.   if [ $dir != . ]  && echo " ${target_configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
  616.     target_configdirs=`echo " ${target_configdirs} " | sed -e "s/ ${dir} / /"`
  617.     if [ -r $srcdir/$dirname/configure ] \
  618.     || [ -r $srcdir/$dirname/configure.in ]; then
  619.       if echo " ${skipdirs} " | grep " ${dir} " >/dev/null 2>&1; then
  620.     true
  621.       else
  622.     notsupp="$notsupp $dir"
  623.       fi
  624.     fi
  625.   fi
  626. done
  627.  
  628. # Sometimes the tools are distributed with libiberty but with no other
  629. # libraries.  In that case, we don't want to build target-libiberty.
  630. if [ -n "${target_configdirs}" ]; then
  631.   others=
  632.   for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do
  633.     if [ "$i" != "libiberty" ]; then
  634.       if [ -r $srcdir/$i/configure ] || [ -r $srcdir/$i/configure.in ]; then
  635.     others=yes;
  636.     break;
  637.       fi
  638.     fi
  639.   done
  640.   if [ -z "${others}" ]; then
  641.     target_configdirs=
  642.   fi
  643. fi
  644.  
  645. # Deconfigure all subdirectories, in case we are changing the
  646. # configuration from one where a subdirectory is supported to one where it
  647. # is not.
  648. if [ -z "${norecursion}" -a -n "${configdirs}" ]; then
  649.   for i in `echo ${configdirs} | sed -e s/target-//g` ; do
  650.     rm -f $i/Makefile
  651.   done
  652. fi
  653. if [ -z "${norecursion}" -a -n "${target_configdirs}" ]; then
  654.   for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do
  655.     rm -f ${target_subdir}/$i/Makefile
  656.   done
  657. fi
  658.  
  659. # Produce a warning message for the subdirs we can't configure.
  660. # This isn't especially interesting in the Cygnus tree, but in the individual
  661. # FSF releases, it's important to let people know when their machine isn't
  662. # supported by the one or two programs in a package.
  663.  
  664. if [ -n "${notsupp}" ] && [ -z "${norecursion}" ]; then
  665.   # If $appdirs is non-empty, at least one of those directories must still
  666.   # be configured, or we error out.  (E.g., if the gas release supports a
  667.   # specified target in some subdirs but not the gas subdir, we shouldn't
  668.   # pretend that all is well.)
  669.   if [ -n "$appdirs" ]; then
  670.     for dir in $appdirs ; do
  671.       if [ -r $dir/Makefile.in ]; then
  672.     if echo " ${configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
  673.       appdirs=""
  674.       break
  675.     fi
  676.     if echo " ${target_configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
  677.       appdirs=""
  678.       break
  679.     fi
  680.       fi
  681.     done
  682.     if [ -n "$appdirs" ]; then
  683.       echo "*** This configuration is not supported by this package." 1>&2
  684.       exit 1
  685.     fi
  686.   fi
  687.   # Okay, some application will build, or we don't care to check.  Still
  688.   # notify of subdirs not getting built.
  689.   echo "*** This configuration is not supported in the following subdirectories:" 1>&2
  690.   echo "    ${notsupp}" 1>&2
  691.   echo "    (Any other directories should still work fine.)" 1>&2
  692. fi
  693.  
  694. # Set with_gnu_as and with_gnu_ld as appropriate.
  695. #
  696. # This is done by determining whether or not the appropriate directory
  697. # is available, and by checking whether or not specific configurations
  698. # have requested that this magic not happen.
  699. # The command line options always override the explicit settings in 
  700. # configure.in, and the settings in configure.in override this magic.
  701. #
  702. # If the default for a toolchain is to use GNU as and ld, and you don't 
  703. # want to do that, then you should use the --without-gnu-as and
  704. # --without-gnu-ld options for the configure script.
  705.  
  706. if [ x${use_gnu_as} = x ] ; then
  707.   if [ x${with_gnu_as} != xno ] && echo " ${configdirs} " | grep " ${gasdir} " > /dev/null 2>&1 && [ -d ${srcdir}/${gasdir} ] ; then
  708.     with_gnu_as=yes
  709.     withoptions="$withoptions --with-gnu-as"
  710.   fi
  711. fi
  712.  
  713. if [ x${use_gnu_ld} = x ] ; then
  714.   if [ x${with_gnu_ld} != xno ] && echo " ${configdirs} " | grep " ld " > /dev/null 2>&1 && [ -d ${srcdir}/ld ] ; then
  715.     with_gnu_ld=yes
  716.     withoptions="$withoptions --with-gnu-ld"
  717.   fi
  718. fi
  719.  
  720. if [ x${shared} = xyes ]; then
  721.   case "${target}" in
  722.     hppa*)        target_makefile_frag=config/mt-papic ;;
  723.     i[345]86-*)        target_makefile_frag=config/mt-x86pic ;;
  724.     *)            target_makefile_frag=config/mt-${target_cpu}pic ;;
  725.   esac
  726. fi
  727.  
  728. # post-target:
  729.  
  730. # Make sure that the compiler is able to generate an executable.  If it
  731. # can't, we are probably in trouble.  We don't care whether we can run the
  732. # executable--we might be using a cross compiler--we only care whether it
  733. # can be created.  At this point the main configure script has set CC.
  734. echo "int main () { return 0; }" > conftest.c
  735. ${CC} -o conftest ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} conftest.c
  736. if [ $? = 0 ] && [ -s conftest ]; then
  737.   :
  738. else
  739.   echo 1>&2 "*** The command '${CC} -o conftest ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} conftest.c' failed."
  740.   echo 1>&2 "*** You must set the environment variable CC to a working compiler."
  741.   rm -f conftest*
  742.   exit 1
  743. fi
  744. rm -f conftest*
  745.  
  746. # The Solaris /usr/ucb/cc compiler does not appear to work.
  747. case "${host}" in
  748.   sparc-sun-solaris2*)
  749.       CCBASE="`echo ${CC-cc} | sed 's/ .*$//'`"
  750.       if [ "`/usr/bin/which $CCBASE`" = "/usr/ucb/cc" ] ; then
  751.           could_use=
  752.           [ -d /opt/SUNWspro/bin ] && could_use="/opt/SUNWspro/bin"
  753.           if [ -d /opt/cygnus/bin ] ; then
  754.               if [ "$could_use" = "" ] ; then
  755.                   could_use="/opt/cygnus/bin"
  756.               else
  757.                   could_use="$could_use or /opt/cygnus/bin"
  758.               fi
  759.           fi
  760.         if [ "$could_use" = "" ] ; then
  761.             echo "Warning: compilation may fail because you're using"
  762.             echo "/usr/ucb/cc.  You should change your PATH or CC "
  763.             echo "variable and rerun configure."
  764.         else
  765.             echo "Warning: compilation may fail because you're using"
  766.             echo "/usr/ucb/cc, when you should use the C compiler from"
  767.             echo "$could_use.  You should change your"
  768.             echo "PATH or CC variable and rerun configure."
  769.         fi
  770.       fi
  771.   ;;
  772. esac
  773.  
  774. # If --enable-shared was set, we must set LD_LIBRARY_PATH so that the
  775. # binutils tools will find libbfd.so.
  776. if [ "${shared}" = "yes" ]; then
  777.   sed -e 's/^SET_LIB_PATH[     ]*=.*$/SET_LIB_PATH = $(REALLY_SET_LIB_PATH)/' \
  778.       Makefile > Makefile.tem
  779.   rm -f Makefile
  780.   mv -f Makefile.tem Makefile
  781.  
  782.   case "${host}" in
  783.   *-*-hpux*)
  784.     sed -e 's/RPATH_ENVVAR[     ]*=.*$/RPATH_ENVVAR = SHLIB_PATH/' \
  785.     Makefile > Makefile.tem
  786.     rm -f Makefile
  787.     mv -f Makefile.tem Makefile
  788.     ;;
  789.   esac
  790. fi
  791.  
  792. # Record target_configdirs and the configure arguments in Makefile.
  793. target_configdirs=`echo "${target_configdirs}" | sed -e 's/target-//g'`
  794. targargs=`echo "${arguments}" | \
  795.     sed -e 's/--norecursion//' \
  796.         -e 's/--cache[a-z-]*=[^     ]*//' \
  797.         -e 's/--ho[a-z-]*=[^     ]*//' \
  798.         -e 's/--ta[a-z-]*=[^     ]*//'`
  799.  
  800. # Passing a --with-cross-host argument lets the target libraries know
  801. # whether they are being built with a cross-compiler or being built
  802. # native.  However, it would be better to use other mechanisms to make the
  803. # sorts of decisions they want to make on this basis.  Please consider
  804. # this option to be deprecated.  FIXME.
  805. if [ x${is_cross_compiler} = xyes ]; then
  806.   targargs="--with-cross-host=${host_alias} ${targargs}"
  807. fi
  808.  
  809. targargs="--host=${target_alias} ${targargs}"
  810. sed -e "s:^TARGET_CONFIGDIRS[     ]*=.*$:TARGET_CONFIGDIRS = ${target_configdirs}:" \
  811.     -e "s%^CONFIG_ARGUMENTS[     ]*=.*$%CONFIG_ARGUMENTS = ${targargs}%" \
  812.     -e "s%^TARGET_SUBDIR[     ]*=.*$%TARGET_SUBDIR = ${target_subdir}%" \
  813.        Makefile > Makefile.tem
  814. rm -f Makefile
  815. mv -f Makefile.tem Makefile
  816.  
  817. #
  818. # Local Variables:
  819. # fill-column: 131
  820. # End:
  821. #
  822.